namespace Xmef.Interfaces
{
    using System;
    using System.Collections.Generic;

    public interface IPluginService<T> : IPluginServiceProvider<IPluginService<T>>, IPluginService, IPluginServiceProvider<IPluginService>//, IPluginIdentity
    {
        T GetItem(Type type, int index);
        T GetService(int index);
        IEnumerable<T> GetServices();
        IEnumerable<T> GetServices(Type type);
        bool Register(Type type, T item);
        bool Register(IPluginServiceManager manager, T item);
        bool Unregister(Type type, T item);
        bool Unregister(IPluginServiceManager manager, T item);
        int ServiceCount { get; }
    }
}

